package com.example.lemieripetizioni;

import java.io.File;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.lemieripetizioni.adapter.RipetizioneListAdapterWithCache;
import com.lemieripetizioni.datamodel.Professore;
import com.lemieripetizioni.datamodel.Ripetizione;
import com.lemieripetizioni.dbadapter.DbAdapter;

public class ProfessoreDetail extends Activity implements OnClickListener {

	Context ctx;
	private ListView listViewRipetizioni;
	List<Ripetizione> listRipetizioni;
	private DbAdapter dbHelper;
	private Cursor cursor;
	private RipetizioneListAdapterWithCache ripetizioneListAdapterWithCache;
	
	private static final String TAG = "ProfessoreDetail - ";
	
	Professore p;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.prof_detail);

		Intent i = getIntent();
		p = (Professore)i.getSerializableExtra("prof");
		
		TextView nomeCognomeDocente = (TextView) findViewById(R.id.nome_cognome_docente);
		nomeCognomeDocente.setText(p.getNome() + " " + p.getCognome());
		
		ctx = this;
		Toast.makeText(this, "Guarda le lezioni disponibili di: "+  p.getNome() + "  " +  p.getCognome()  , Toast.LENGTH_LONG).show();

		Button OpenPDF = (Button) findViewById(R.id.visualizzaIlCV);
		OpenPDF.setOnClickListener(this);
								
		listRipetizioni = new ArrayList<Ripetizione>();

		Date currDate = new Date();
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(currDate);
		calendar.add(Calendar.MONTH, 1);

		// get all prof
		getRipetizioniByProf();
		
		listViewRipetizioni = (ListView) findViewById(R.id.prof_detail_list_result);

		// Set our custom array adapter as the ListView's adapter.
		ripetizioneListAdapterWithCache = new RipetizioneListAdapterWithCache(this,	R.layout.prof_detail_result_item_to_book, listRipetizioni, this);
		listViewRipetizioni.setAdapter(ripetizioneListAdapterWithCache);	
	}
	
	public void getRipetizioniByProf() {
		listRipetizioni.clear();
		dbHelper = new DbAdapter(this);
		dbHelper.open();

		// TODO da rimuovere mock per inserimento professori in lista
		mockInsertRipetizioniList();

		cursor = dbHelper.fetchAllRipetizioneEntry();

		while (cursor.moveToNext()) {

			String data = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_DATA));
			String oraInizio = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_ORA_INIZIO));
			String oraFine = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_ORA_FINE));
			String costoOrario = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_COSTO_ORARIO));
			Ripetizione r = new Ripetizione(data, oraInizio, oraFine, costoOrario);

			Log.d(TAG, r.toString());

			listRipetizioni.add(r);
		}

		dbHelper.close();
		cursor.close();
	}
	
	private void mockInsertRipetizioniList() {

		final Calendar c = Calendar.getInstance();
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH);
		int day = c.get(Calendar.DAY_OF_MONTH);

		String date_selected = String.valueOf(day) + "/" + String.format("%2s", String.valueOf(month + 1)).replace(' ', '0')
				+ "/" + String.valueOf(year);

		Ripetizione ripe_mock1 = new Ripetizione(date_selected, "11:00", "12:00", "15.00");
		Ripetizione ripe_mock2 = new Ripetizione(date_selected, "14:00", "16:00", "12.50");
		Ripetizione ripe_mock3 = new Ripetizione(date_selected, "09:00", "11:00", "10.00");

		dbHelper.createRipetizioneEntry(ripe_mock1);
		dbHelper.createRipetizioneEntry(ripe_mock2);
		dbHelper.createRipetizioneEntry(ripe_mock3);
	}		
	
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.visualizzaIlCV:

			File pdfFile = new File("/storage/sdcard0/download/CV2013_Terribilio.pdf");
			if (pdfFile.exists()) {
				Uri path = Uri.fromFile(pdfFile);
				Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
				pdfIntent.setDataAndType(path, "application/pdf");
				pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

				try {
					startActivity(pdfIntent);
				} catch (ActivityNotFoundException e) {
					Toast.makeText(ctx, "No Application available to view pdf", Toast.LENGTH_LONG).show();
				}
			}
			break;
		}
	}
}
